因為我對 python 不熟,題目可能會在簡單和中等之間跳來跳去
用 Python3 解 LeetCode 系列,290 Word Pattern
,屬於 Easy
Given a pattern
and a string s
, find if s
follows the same pattern.
Here follow means a full match, such that there is a bijection between a letter in pattern
and a non-empty word in s
.
Example 1:
Input: pattern = "abba", s = "dog cat cat dog"
Output: true
Example 2:
Input: pattern = "abba", s = "dog cat cat fish"
Output: false
Example 3:
Input: pattern = "aaaa", s = "dog cat cat dog"
Output: false
Example 4:
Input: pattern = "abba", s = "dog dog dog dog"
Output: false
pattern
和s
s
一個單字,相同字母單字必須一樣s
是否符合pattern
pattern
字母數量和s
單字數量不同,一定就是 falsemapping_dict
的 key 是pattern
的字母,值是同 index 的s
內容exist_check_dict
的 key 是s
的單字,值是pattern
的字母pattern
所有值pattern
字母為 key 的mapping_dict
資料,和s
中相同位置的單字有沒有一樣pattern
字母同 index 的 s 單字所對應的字母和exist_check_dict
紀錄中的字母有沒有一樣class Solution:
def wordPattern(self, pattern: str, s: str) -> bool:
# 長度判斷,如果不同長度一定就是 false
words_list = s.split(' ')
words_len = len(words_list)
pattern_len = len(pattern)
if words_len != pattern_len:
return False
mapping_dict = dict()
exist_check_dict = dict()
for index, val in enumerate(pattern):
# 如果 pattern key 存在
if val in mapping_dict.keys():
# 檢查 pattern 字母代表的單字是否一致
if mapping_dict[val] != words_list[index]:
return False
else:
# 檢查有沒有重複的單字在不同字母中
if words_list[index] in exist_check_dict:
if exist_check_dict[words_list[index]] != val:
return False
else :
mapping_dict[val] = words_list[index]
exist_check_dict[words_list[index]] = val
return True
安安我是剛入門的新手,想請問def wordPattern(self, pattern: str, s: str) -> bool:
這行當中的 -> bool: 是什麼語法?
因為直接Google都一直搜到別的東西 所以想詢問您這種寫法什麼意思?